package uade.distribuidas.server.domain;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import uade.distribuidas.repo.dto.ItemCompraDTO;
import uade.distribuidas.repo.dto.OrdenCompraDTO;
/**
 * 
 */
@Entity
@Table(name="ordenes_compras")
public class OrdenCompra {




	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	@Column(name = "idordencompra")	
	private Integer id;

	
	private String numero;
	
	@Column(name="fechaemision")
	private Date fechaEmision;
	
	@ManyToOne(cascade=CascadeType.ALL)
	@JoinColumn(name="idproveedor")
	private Proveedor proveedor;
	
	@OneToOne(cascade=CascadeType.ALL)
	@JoinColumn(name="idOrdenPedido")
	private OrdenPedido pedido;
	
	@OneToMany(cascade=CascadeType.ALL)
	@JoinColumn(name="idordencompra")
	private List<ItemCompra> items;
	
	
	
	public OrdenCompra() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Date getFechaEmision() {
		return fechaEmision;
	}
	public void setFechaEmision(Date fechaEmision) {
		this.fechaEmision = fechaEmision;
	}
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public Proveedor getProveedor() {
		return proveedor;
	}
	public void setProveedor(Proveedor proveedor) {
		this.proveedor = proveedor;
	}
	public List<ItemCompra> getItems() {
		return items;
	}
	public void setItems(List<ItemCompra> items) {
		this.items = items;
	}
	public OrdenPedido getPedido() {
		return pedido;
	}
	public void setPedido(OrdenPedido pedido) {
		this.pedido = pedido;
	}

	public void agregarItem(ItemCompra ic){
		if (this.items==null) {
			this.items = new ArrayList<ItemCompra>();
		}
		this.items.add(ic);
	}
	public String getNumero() {
		return numero;
	}
	public void setNumero(String numero) {
		this.numero = numero;
	}
    
    public OrdenCompraDTO getVista(){
    	OrdenCompraDTO dto = new OrdenCompraDTO();
    	dto.setFechaEmision(fechaEmision);
    	dto.setId(id);
    	List<ItemCompraDTO> itemsf=new ArrayList<ItemCompraDTO>();
    	for(ItemCompra c:items){
    		itemsf.add(c.getVista());
    	}
    	dto.setItems(itemsf);
    	dto.setNumero(numero);
    	dto.setPedido(pedido.getVista());
    	dto.setProveedor(proveedor.getVista());
    	return dto;
    }
}
